package com.qf.helloworld;

import com.qf.util.MQConnUtil;
import com.rabbitmq.client.*;
import org.junit.Test;

import java.io.IOException;

/**
 * openapi-search
 * 监听队列消息
 * 获取消息,并且包内容保存到ES
 */
public class Consumer {

    @Test
    public void consume() throws Exception {
//        - 获取Connection
        Connection conn = MQConnUtil.getConn();
//        - 创建Channel
        Channel channel = conn.createChannel();
//        - 创建Queue
        /*
        queue：指定队列名称
        durable：队列是否持久化，RabbitMQ重启，队列依然存在
        exclusive：是否排外，如果当前队列只允许一个消费者存在，就设置为true
        autoDelete：是否自动删除，如果长时间没人操作当前队列，队列会自动删除
        arguments：设置当前队列的其他属性
         */
        channel.queueDeclare(Publisher.HELLO_WORLD_QUEUE,true,false,false,null);
//        - 监听Queue中的消息
        DefaultConsumer callback = new DefaultConsumer(channel){
            @Override
            public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {
                System.out.println("接收到消息：" + new String(body));
            }
        };
        channel.basicConsume(Publisher.HELLO_WORLD_QUEUE,callback);
//        - 让程序停在这个位置
        System.out.println("消费者开始监听:" + Publisher.HELLO_WORLD_QUEUE);
        System.in.read();
//        - 释放资源
        channel.close();
        conn.close();
    }


}
